ESNES : The Next great snes emulator!

ESNES

Everyone has heard of Nintendo's Super Nintendo (SNES) console, even newbies, released in November of 1990 (though not in Spain until some time after). Most people agree that it is the best 16-bit console, with epic games like the Final Fantasy series (many of which remain in Japan, unfortunately) and the immortal Mario games.

The SNES is based on a 65c816 CPU, a descendant of the 6502 in the NES, with 128k of RAM. It has 2 video chips, PPU1 5c77-01 and PPU2 5c78-03, with 64k of Video RAM, which permit display resolution as high as 512x448 in 256 colours (out of a possible 32,768), with as many as 128 sprites on screen, each with a size of 64x64 pixels. It can zoom, rotate, and independantly scroll any of it's 4 display planes.

The sound is based around SPC-700, a chip which everyone trying to add sound to SNES emulators has come to hate. It was custom-manufactured by Sony for Nintendo, the beginning of the business relation that tried and failed to create the SNES-CD. Because the operation of this little chip remains largely unknown, don't expect sound very soon.

Lord ESNES began writing the emulator on October 1st, 1996. His goal is to make an SNES emulator for DOS. He uses the GNU C compiler, optimised with some 386 assembly, using VESA 2.0 graphics, though at the beginning of the project, he didn't know assembly or C, and had never written any graphical program - he has learned all of this WHILE writing Esnes. He has plans to port it to Linux sometime in the future.

These are some screenshots of Esnes in action! ( From 0.10a!)

Final Fantasy Mystic Quest and Looney Tunes Basketball

Street Fighter 2 and Final Fantasy 3

MegaManX and 7th saga

Breath of Fire 2

The following is a list of versions of esnes. See how far it has come!

Esnes version 0.11a for DOS (04-24-97):READ THE DOCS!

THIS VERSION IS DEDICATED TO YOSHI, WITHOUT HIM, ESNES WOULD NEVER HAD BEEN.

This version includes line-to-line graphics engine, it is necessary in roms with IRQ and/or HDMA. HDMA line-to-line and DMA fixes. SRAM support in mode 21, SRAM size checks, Interleaved ROM format, a lot of bug fixes, new commands line options, 2-4 buttons joystick support, Pro Action Replay Codes support, and ROM patches in memory. A lot of games are working better. Read the Docs, and type : esnes, if you want to see the new options.

ESNES 0.11a Esnes 0.11a with line-to-line graphics engine.
ESNES 0.11a Esnes 0.11a1 without line-to-line graphics engine.

Esnes version 0.10vesa for DOS (03-20-97): ESNES 0.10a FOR VESA 2 : VESA 2 DRIVER


Esnes version 0.10a for DOS (03-12-97): !!! READ THE DOCS !!!

Support for Multi Game Doctor II (simple/multi file) ROM format has been added. ( Now you can use your cd's). New options have been implemented. Push 4 for joypad 1, 5 for joypad 2, 6 for Forced Screen ON ( it is necessary in a lot of stuff, it can be used to avoid flicker or black screen. ffmq, punchout, mk2, tmnt 5, final fight, sf2 ... ), 7 to deactivate Forced Screen, and now F1,F2,F3 for activate/deactivate BGs. A new parameter option has been included, -nirq ( deactivate IRQ, it is necessary at least in Super Star Wars, and Mystical Ninja). If you are using an SRAM of 8 kb, add 24 kb with zeros in the end of the file, the new size is 32 kb. ( You can't save SRAM mode21 games, yet, but in some mode 21 games ( 7thsaga) the SRAM system is same as the mode 20 SRAM system. ). You can get a picture by pushing 8, during the game, it is now saved with the names esnes000.pcx .. esnes009.pcx. ( but only 10 pictures ). New timing has been implemented, a LOT OF new games is now working, but it is still incorrect. Partial mode 7 has been included ( VERY THANKS to Gary H. , it is a port of your routine.). A lot of bugs, and new things have been fixed/added/implemented/included/... in this version, ENJOY IT.

( SINCERELY, VERY THANKS TO GARY, JERREMY and to the snes97 list)


Esnes version 0.095b for DOS : (02-24-97) It is a minor release. The graphics routines have been speed up 20-25 %. Automatic Load/Save SRAM have been added, now file is named nameofthegame.srm. Others minnor bugs has been fixed, but NO new games are working. (I think). The file has now a minor size.


Esnes version 0.09b for DOS : (02-19-97) A important bug in the scroll routine has been fixed. If you have tested esnes, before, then you understand that I am saying. Now A LOT OF games are playable ( contra 3, aladdin, breath of fire, alien3, indiana jones, gradius 3, ... ). A new function has been added, push 3 for activate the window in the plane 3, and push 2 for desactivate it. ( it is necessary in FF2 ).


Esnes version 0.09a for DOS : (02-18-97) Horizontal Scroll pixel-based has been added. A important bug in DMA has been found and fixed, it was the problem of the sprites in a lot of games ( dennis the mennace, indiana jones, pacman in time, smashtv, zelda 3 ... ). IRQ interrupt support has been added, it is bugged (yet), but a lot of new games are starting to work.


Esnes version 0.087b for DOS : (02-14-97):

This is a minor release, it includes full color, fade and now you can activate and deactivate BGs, with the keys 1,2,3. (in mode 1) It is very important in Zelda3 (BG1) and G.and Ghosts (BG3).


Esnes version 0.086b : Beta testers version.


Esnes version 0.085b for DOS : (02-10-97):

A major bug in the emulator core has been fixed, and keyboard compatible NES support has been added, letting Super Mario World, Addams Family 2, Super Star Wars, and other games run better.


Esnes version 0.08b for DOS (02-06-97):

Even more games are playable in this version, including Castlevania 4, Simcity, and Super Off Road. The CPU has been sped up by 40%! This version also adds complete support for sprites (except PriorityRotation), pixel-based vertical scrolling, and graphics Modes 3, 4, and 5. HiROM (ROMs > 16mbits) support has been added, and many bugs in the CPU and SNES register emulation have been fixed. DMA modes have been implemented (though it causes bugs in some games, use '4' to deactivate the HDMA, necessary to play Battletoads vs. Double Dragon). Save RAM is also now supported, 6 saves it and 7 loads it from disk.


Esnes version 0.08a for DOS (01-29-97):

Many games are playable in this version, including Super Mario World! This version has a new graphics system, with 16x16 and 32x32 tile map support, 8x8 and 16x16 tile sizes, tile-based scrolling, full background/sprite priorities (thanks to Jerremy Koot). HDMA has been added (thanks to Ernesto Corvi), and the (silent) SPC-700 emulation and memory system have been sped up.


Esnes version 0.07b for DOS (01-17-97):

Super Mario World, Simcity, Joe and Mac, Paperboy 2, Zelda 3, SmashTV, and Magic Sword all work better now, due to debugging of the register and block transfer opcodes. Mode 4 has been implemented, allowing Ultraman to work, and the BRK opcode has been implemented, allowing the Ghouls and Ghosts intro to work. Frame skipping support has been added <-frame number>, where number is from 1 to 9.


Esnes version 0.07a for DOS (01-13-97):

The main addition to this version is object flip (i.e. displaying graphics backwards and upside down), and bug fixes in DMA, which let TMNT 4, Gradius 3, and Contra 3 to work better. Object support has been added for mode 7, so now the players are displayed in Super Soccer. Some of the CPU has been rewritten in assembly, but the speed is not notably increased yet.


Esnes version 0.061b for DOS (01-08-97):

ESNES has been rewritten using a modular system, thanks to The_Teacher. modular system ( thanks to the_teacher ). Tile flip (displaying tiles backwards) and partial sprite support have been added, allowing some games to work. A screenshot function has been added, take screenshots with '8' (saves to ESNES.PCX, thus each screenshot overwrites the last). Some bugfixes, including: the keyboard handler (allowing you to press start and see the title screens fade out in Actraiser and Final Fantasy II), and a memory map bug. The debugger is not included in this version. Some games that work better are TMNT IV, Congo Caper, and Columns.


Esnes version 0.06a for DOS (12-16-96):

Many games work now, including TMNT IV, Gradius 3, Axelay, Castlevania 4, Contra 3, Actraiser, Sunset Riders, Poptwin, Batman, Breakthrough, Tennis, and SimCity. Most CPU opcodes (except PER, MVN, BRK, and STP) have been added and fixed, including the bugs in flags in LDA, LDX, LDY, and CMP opcodes. Graphics Mode 5 was added, letting the Quartex demo work now. Mode 7 palette has been fixed. RAM is now mapped correctly.


Esnes version 0.05b for DOS (12-09-96):

TMNT 4, Pacman, Columns, and Super Off Road (nasty DMA bug fixed, letting it work), as well as many demos, work better in this version. Keyboard support has been added (except for the L & R buttons), letting you play the Tic Tac Toe and What a Chess! games. Some new opcodes and SNES registers (2115, 2101, 2102), and optimisations have been implemented in NMIs and the SPC emulation, letting the Infinity demo and Final Fantasy 2 work better.
NOTE : E=L, R=R, S=X, D=A, Z=Y, X=B, C=Select, V=Start, and ESC or CTRL+ALT+END exit.


Esnes version 0.05a for DOS (12-02-96):

Super Mario World now shows the "Nintendo Presents" screen, and Super Off Road, Q*Bert 3, PacMan, and Columns all show title screens! Some keyboard support added, letting you press start in What a Chess! and Tic Tac Toe. The debugger works now (push 0, and then 2 for text mode). Many opcodes (LSR, ASL, ADC, SBC) and stack problems were fixed. Graphics Mode 2 added, now Modes 0 through 3 as well as 7 have been implemented. The silent audio emulation (SPC) has been improved, it is quite slow, but correct.
NOTE : ESC or CTRL+ALT+END exit.


Esnes version 0.04b for DOS (11-28-96):

Bugfixes: NMI vectors, XBA (flag problems), EOR, and ROR opcodes fixed. PPU fixed (now mapped in 0 - 3f, thanks to a #snes guy for this). Added instruction cycle counting. FF2 and Krusty's Fun House now show a screen correctly! ( H0H0H0 :-) )


Esnes version 0.04a for DOS (11-25-96):

Many demos work now, including dwarf.smc, censor.smc, ttt.smc, sneswish.smc, cdi.smc, taurus.smc, demo.smc, colors.smc, spcexp95.smc, quartex.smc (only partially, as mode 5 doesn't work), pong.smc, uniintro.smc, sleeptro.smc, ats_1.sptro.smc, and ats_1.smc. Mode 1 has been fixed (Background 4 added), Scrolling has been added to Background 3, many opcodes have been fixed (70% of opcodes now work, fixed memory access, and ASL and LSR), NMI, Reset, and COP vectors fixed, and the graphics routines have been optimised, giving speedups of 200 to 300%! Commercial ROMS don't yer work though).


Esnes version 0.03a for DOS (11/11/96):


Esnes version 0.021b for DOS (11-4-96):

  • Some snes registers semi-implemented.
  • Fixed a lot of opcodes. (thanks y0SHI).
  • Some more opcodes implemented.
  • NMI semi-implemented. (very buggy).
  • APU is ignored.
  • Sotfware :
  • Demo infinity.smc work.(not keys)
  • Demo magical.smc starts.
  • Demo parallax.smc starts.

Notes:
It is very slow ( programed in C)
CTRL+PAUSE exits.


Esnes version 0.02b for DOS (10-28-96):

  • Mode 0 semi-implemented.
  • Mode 1 added BG2 and BG3.
  • Mode 3 semi-implemented.
  • Mode 7 semi-implemented.
  • Some more opcodes implemented. ( total = 23% )
  • Sotfware :
  • Demo cc-runme.smc starts.
  • Demo mwsample.smc starts.
  • Demo vsmcse.smc starts.
  • Demo rotator.smc starts.
  • Demo zoomer.smc starts.
  • Demo mode7.smc starts.
  • Demo uni_intr.smc starts.
Notes:
APU (audio processor) is not implemented.
CTRL + PAUSE exits.


Esnes version 0.02a for DOS (10-21-96):

  • Fixed a bit problem, in load of the rom.
  • Some snes registers semi-implemented.
  • Dma semi-implemented.
  • Mode 1 semi-implemented.
  • Some more opcodes implemented.
  • Software :
  • demo sonic.smc start.
  • demo tweetie.smc start.

Notes:
This version does not run demos, and of course no commercial roms. If you find demos that work in this version, please send me mail!


Thanks To ESNES for making such a great emulator, much of what is on this page is from the ESNES Home Page. Good Luck Lord ESNES!

Send mail to Lord ESNES: calb@gsyc.inf.uc3m.es . (NO commercial ROM requests please)

shadow5@ziplink.net